草庐IT

c++ getline和stringstream

全部标签

c++ - 使用 getline() 而不设置 failbit

是否可以使用getline()读取有效文件而不设置failbit?我想使用failbit以便在输入文件不可读时生成异常。以下代码总是在最后一行输出basic_ios::clear-即使指定了有效输入也是如此。测试.cc:#include#include#includeusingnamespacestd;intmain(intargc,char*argv[]){ifstreaminf;stringline;inf.exceptions(ifstream::failbit);try{inf.open(argv[1]);while(getline(inf,line))cout输入.txt:t

c++ - stringstream->rdbuf()->pubsetbuf 没有设置缓冲区

我正在尝试使用pubsetbuf方法修改stringstream对象的stringbuffer而不必复制字符串,但它不起作用。我正在关注http://www.cplusplus.com/reference/iostream/streambuf/pubsetbuf/中的文档.这是我的示例代码:#include#includeintmain(intargc,char*argv[]){std::stringstreamstream("Yousaygoodbye");charreplace[]={"AndIsayhello"};std::coutpubsetbuf(replace,16);//

c++ - 在 ostream 函数中使用 stringstream

我正在考虑为某些数学类(矩阵、vector等)提供ostream运算符。一位friend注意到ostream的gcc标准库实现std::complex的运算符包括在内部使用字符串流来格式化输出,然后再将其传递给实际的ostream:///Insertionoperatorforcomplexvalues.templatebasic_ostream&operator&__os,constcomplex&__x){basic_ostringstream__s;__s.flags(__os.flags());__s.imbue(__os.getloc());__s.precision(__o

c++ - 可以将 std::getline() 与移出的 std::string 一起使用吗?

std::getline(std::istream&,std::string&)的第二个参数是否安全且定义明确?成为一个左值,指的是从std::string移出的,如果是,那么字符串是否从其移出状态恢复,所以方法如pop_back()可以安全调用吗?更简单地说,使用getline()写入字符串是否与分配给该字符串具有等效的语义?或者更具体地说,以下(有些做作的)代码段是否定义明确且正确?std::ifstreamf("foo.txt");std::vectorlines;for(std::strings;std::getline(f,s);lines.push_back(std::mo

c++ - 我可以使用 stringstream 判断 std::string 是否代表数字吗?

显然这应该用于显示字符串是否为数字,例如“12.5”==yes,“abc”==no。但是我对输入毫无顾忌。std::stringstreamss("2");doubled;ss>>d;if(ss.good()){std::cout 最佳答案 不要使用good()!测试流是否为failedornot:if(ss)Good告诉您是否设置了eofbit、badbit或failbit中的任何一个,而fail()告诉您有关badbit和failbit的信息。您几乎从不关心eofbit除非您已经知道流失败,因此您几乎不想使用good。请注意,直

c# - 如何调用接受来自 C# 的 stringstream 类型参数的 C++ DLL 函数?

我想导入一个非托管C++DLL并调用一个将stringstream作为参数的函数。在C#中,没有stringstream类,所以谁能告诉我如何从C#程序中调用这样的函数? 最佳答案 句号,您不应该通过DLL公开模板化对象。模板化对象(例如std::中的几乎所有内容)都被内联。所以通过这种方式,您的DLL获得了它自己的私有(private)实现拷贝。调用您的DLL的模块还将获得其自己的stringstream私有(private)实现。在它们之间传递意味着您无意中将两个不相关的实现编织在一起。对于许多项目,如果您使用完全相同的buil

c++ - 如何将 stringstream 内容放入 char 而不是 string 类型?

大家都知道stringstream.str()需要一个字符串变量类型来存储stringstream.str()的内容。我想将stringstream.str()的内容存储到char变量或char数组或指针中。这有可能吗?请用你的答案写一个简单的例子。 最佳答案 为什么不只是std::strings=stringstream.str();constchar*p=s.c_str();?编辑:请注意,您不能随意提供p在你的函数之外:它的生命周期被绑定(bind)到s的生命周期,所以您可能想要复制它。编辑2:正如@David所暗示的,上面的

c++ - Stringstream 提取整数

为什么我无法将整数值提取到Num变量中?#include#include#includeusingnamespacestd;intmain(){stringDigits("123");stringstreamss(Digits);stringTemp;vectorTokens;while(ss>>Temp)Tokens.push_back(Temp);ss.str(Tokens[0]);intNum=0;ss>>Num;cout 最佳答案 当流提取3个数字“123”中的最后一个时,将设置eof状态。这个不是str()成员清除的,需要

c++ - 尝试转换 str 字符串以用于 std::getline 定界符

我正在尝试获取std::string值并将其用作std::getline()函数中的分隔符但无论我做什么,编译器都会给我错误。这就是我想要做的:std::stringstreamss(s);std::stringitem;std::stringdelim="&&=";intssize=delim.size();intnewssize=ssize+1;chardel[SSIZE];//alsoherewhenitrygiveserrorstrcpy(del,delim.c_str());char*delrr[1024]=delim.c_str();//giveserrorwhile(st

c++ - 我可以将 stringstream 用作 C# 中的 `MemoryStream` 之类的内存流吗?

在C/C++中,字符串以NULL结尾。我可以像C#中的MemoryStream那样使用stringstream作为内存流吗?内存流的数据中间可能有\0值,但C++字符串以NULL结尾。 最佳答案 当在std::string中存储字符序列时,您可以包含空字符。相应地,std::stringstream也可以处理嵌入的空字符。但是,流上的各种格式化操作不会通过空字符。此外,当使用内置字符串为std::string赋值时,空字符很重要,即,您需要使用各种重载,将字符序列的大小作为争论。你到底想达到什么目的?可能有一种比在字符串流中旅行更简